package lk.icta.core.service;

import lk.icta.core.entity.URMGOIUser;
import lk.icta.user.entity.User;

import java.util.List;

/**
 * @author Tharanga Punchihewa
 */
public interface URMGOIUserManagementService {

    /**
     * Adding UR-MGOI User
     *
     * @param urmgoiUser The OR-MGOI User to be added
     * @param user       The user requesting to add the user
     */
    public void addORMGOIUser(URMGOIUser urmgoiUser, User user);

    /**
     * Adding UR-MGOI User
     *
     * @param urmgoiUser The OR-MGOI User to be update
     * @param user       The user requesting to update the user
     */
    public void updateORMGOIUser(URMGOIUser urmgoiUser, User user);

    /**
     * find UR-MGOI User
     *
     * @param id   id of the ormoi user
     * @param user The user requesting ormoi user
     */
    public URMGOIUser getURMGOIByIdUKey(long id, User user);

    /**
     * get UR-MGOI User list by organization id
     *
     * @param organizationId The OR-MGOI User to be update
     * @param user           The user requesting to  user list
     * @return URMGOI user list for given organization
     */
    public List<URMGOIUser> getURMGOIUserListByOrganization(int organizationId, User user);

    /**
     * active UR-MGOI User
     *
     * @param urmgoiUser The OR-MGOI User to be active
     * @param user       The user requesting to  active user
     */
    public void activeURMGOIUser(URMGOIUser urmgoiUser, User user);

    /**
     * inactive UR-MGOI User
     *
     * @param urmgoiUser The OR-MGOI User to be inactive
     * @param user       The user requesting to  inactive user
     */
    public void inactiveURMGOIUser(URMGOIUser urmgoiUser, User user);

    /**
     * find UR-MGOI User
     *
     * @param userName id of the ormoi user
     * @return ur-mgoi user
     */
    public URMGOIUser getURMGOIByUserName(User userName);
}
